const path = require('path')
// 以当前文件所处的地址为起点来查找某一个目录的绝对的地址
const pathResolve = pathUrl => path.join(__dirname, pathUrl)
const AntdDayjsWebpackPlugin = require('antd-dayjs-webpack-plugin')
const CracoLessPlugin = require('craco-less')
const { GitRevisionPlugin } = require('git-revision-webpack-plugin')
// git插件实例
const gitReversionPlugin = new GitRevisionPlugin({
    versionCommand: 'describe --always --tags --dirty'
})



module.exports = {
    
        // 这里可以配置各种插件
    plugins: [
        {
            plugin: AntdDayjsWebpackPlugin
        },
        {
            plugin: CracoLessPlugin,
            // 描述了这个插件使用上的选项配置
            options: {
                lessLoaderOptions: {
                    lessOptions: {
                        modifyVars: {
                            // '@primary-color': 'volcano', // 全局主色
                            //   '@link-color': '#1890ff', // 链接色
                            //   '@success-color': '#52c41a', // 成功色
                            //   '@warning-color': '#faad14', // 警告色
                            //  ' @error-color': '#f5222d', // 错误色
                            //   '@font-size-base': '14px', // 主字号
                            //   '@heading-color': 'rgba(0, 0, 0, 0.85)', // 标题色
                            //   '@text-color': 'rgba(0, 0, 0, 0.65)', // 主文本色
                            //   '@text-color-secondary': 'rgba(0, 0, 0, 0.45)', // 次文本色
                            //   '@disabled-color': 'rgba(0, 0, 0, 0.25)', // 失效色
                            //   '@border-radius-base': '2px', // 组件/浮层圆角
                            //   '@border-color-base': '#d9d9d9', // 边框色
                            //   '@box-shadow-base': '0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05)', // 浮层阴影
                        },
                        javascriptEnabled: true,
                    },
                },
            },
        },
        {
            // 自定义的操作
            plugin: {
                // 这里可以直接拿到webpack的配置, 进行修改
                overrideWebpackConfig: ({ webpackConfig, cracoConfig, pluginOptions, context: { env, paths } }) => {
                    // console.log(webpackConfig.plugins);
                    // 进行打包地址修改
                    if (env === 'production') {
                        paths.appBuild = path.join(path.dirname(paths.appBuild), 'dist')
                        webpackConfig.output.path = path.join(path.dirname(webpackConfig.output.path), 'dist')
                    }
                    // 全局环境变量
                    const definePluginIndex = env === 'development' ? 3 : 4
                    const definePlugin = webpackConfig.plugins[definePluginIndex]
                    const definitions = definePlugin.definitions
                    // 变量只能放字符串
                    definitions['process.git'] = {
                        commithash: JSON.stringify(gitReversionPlugin.commithash()),
                        version: JSON.stringify(gitReversionPlugin.version()),
                        branch: JSON.stringify(gitReversionPlugin.branch()),
                    }
                    definitions['process.classes'] = {
                        name: JSON.stringify('BK2124')
                    }
                    return webpackConfig;
                },
            },
            options: {}
        }, 
        
    ],

    webpack: {
      alias: {
        '@': pathResolve('src'),
        // '@styles': pathResolve('src/styles'),
    }
},
};